home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / sasc.fpl < prev    next >
Text File  |  1995-07-18  |  5KB  |  236 lines

  1. /* These first functions are to be called from the SCMSG browser through ARexx. */
  2.  
  3. export void SCMSG_Edit(string filename)
  4. {
  5.     if(SCMSG_GotoFile(filename))
  6.         return;
  7.     else
  8.         Open(filename);
  9. }
  10.  
  11. export int SCMSG_GotoFile(string filename)
  12. {
  13.     string name;
  14.     int newID;
  15.  
  16.     name=extractName(filename);
  17.  
  18.     if(!(newID=GetBufferID(name,1)))
  19.         return 0;
  20.  
  21.     Activate(newID);
  22.     CurrentBuffer(newID);
  23.     return newID;
  24. }
  25.  
  26. export void SCMSG_GotoLine(int line, string msg)
  27. {
  28.     GotoLine(line);
  29.     ReturnStatus(msg);
  30. }
  31.  
  32. string extractName(string filename)
  33. {
  34.     int newID;
  35.     int pos;
  36.  
  37.     pos=strlen(filename);
  38.  
  39.     for(;pos>=0;--pos)
  40.     {
  41.         if(filename[pos]=='/' || filename[pos]==':')
  42.             break;
  43.     }
  44.  
  45.     return(substr(filename,pos+1,-1));
  46. }
  47.  
  48. string stripExtension(string file)
  49. {
  50.     int len=strlen(file);
  51.  
  52.     for(--len;len>0 && file[len]!='.'; --len)
  53.         ;
  54.  
  55.     if(!len)
  56.         return(file);
  57.  
  58.     return(substr(file,0,len));
  59. }
  60.  
  61. /* The rest of the functions below are for communication from FrexxEd to SCMSG. */
  62.  
  63. export void SASC_Make(void)
  64. {
  65.     string com;
  66.  
  67.     com="Run CD ";
  68.     com+=ReadInfo("file_path",GetBufferID());
  69.     com+=" +\n smake <>CON:0/11/-1/200/smake/CLOSE/WAIT/SCREEN";
  70.     com+=ReadInfo("current_screen",GetBufferID());
  71.  
  72.     System(com);
  73. }
  74.  
  75. export void SASC_Build(void)
  76. {
  77.     string path;
  78.  
  79.     if(!FindPort("SC_SCMSG"))
  80.     {
  81.         System("Run SC:c/scmsg");
  82.         if(!FindPort("SC_SCMSG",7))
  83.         {
  84.             DisplayBeep();
  85.             return;
  86.         }
  87.     }
  88.  
  89.     path=ReadInfo("file_path",GetBufferID());
  90.  
  91.     if(!strlen(path))
  92.         return;
  93.  
  94.     if(SaveString("ENV:sc/projdir",path))
  95.     {
  96.         DisplayBeep();
  97.         return;
  98.     }
  99.  
  100.     ARexxSend("SC_SCMSG","BUILD");
  101. }
  102.  
  103. export void SASC_Compile(void)
  104. {
  105.     string com;
  106.  
  107.     com="Run CD ";
  108.     com+=ReadInfo("file_path",GetBufferID());
  109.     com+=" +\n sc <>CON:0/11/-1/200/sc/CLOSE/WAIT/SCREEN";
  110.     com+=ReadInfo("current_screen",GetBufferID());
  111.     com+=" ";
  112.     com+=ReadInfo("file_name",GetBufferID());
  113.  
  114.     System(com);
  115. }
  116.  
  117. export void SASC_Opts(int global)
  118. {
  119.     string com;
  120.  
  121.     com="Run CD ";
  122.  
  123.     if(global)
  124.         com+="ENV:sc";
  125.     else
  126.         com+=ReadInfo("file_path",GetBufferID());
  127.  
  128.     com+=" +\n SC:c/scopts";
  129.  
  130.     System(com);
  131. }
  132.  
  133. export void SASC_ShowMsg(string cmd)
  134. {
  135.     int newID;
  136.     string file,line,msg=" ";
  137.  
  138.     if(strlen(cmd))
  139.         ARexxSend("SC_SCMSG",cmd);
  140.  
  141.     file=ARexxSend("SC_SCMSG","FILE",-1);
  142.  
  143.     if(!strlen(file))
  144.         return;
  145.  
  146.     if(!SCMSG_GotoFile(file))
  147.         return;
  148.  
  149.     line=ARexxSend("SC_SCMSG","LINE",-1);
  150.     GotoLine(atoi(line));
  151.  
  152.     msg+=ARexxSend("SC_SCMSG","CLASS",-1);
  153.     msg+=" ";
  154.     msg+=ARexxSend("SC_SCMSG","ERRNUM",-1);
  155.     msg+=": ";
  156.     msg+=ARexxSend("SC_SCMSG","TEXT",-1);
  157.  
  158.     ReturnStatus(msg);
  159. }
  160.  
  161. export void SASC_Run(void)
  162. {
  163.     int len;
  164.     string file,com;
  165.  
  166.     com="Run CD ";
  167.     com+=ReadInfo("file_path",GetBufferID());
  168.     com+=" +\n";
  169.  
  170.     file=ReadInfo("file_name",GetBufferID());
  171.  
  172.     if(!(len=strlen(file)))
  173.         return;
  174.  
  175.     com+=stripExtension(file);
  176.     com+=" <>CON:0/11/-1/200/Program_execution/CLOSE/WAIT/SCREEN";
  177.     com+=ReadInfo("current_screen",GetBufferID());
  178.     com+=" ";
  179.     com+=PromptString("","Program execution","Enter arguments");
  180.  
  181.     System(com);
  182. }
  183.  
  184. export void SASC_Debug(string cmd)
  185. {
  186.     int len;
  187.     string file,com;
  188.  
  189.     com="Run CD ";
  190.     com+=ReadInfo("file_path",GetBufferID());
  191.     com+=" +\n sc:c/cpr -";
  192.     com+=cmd;
  193.  
  194.     file=ReadInfo("file_name",GetBufferID());
  195.     if(!(len=strlen(file)))
  196.         return;
  197.  
  198.     com+=" ";
  199.     com+=stripExtension(file);
  200.  
  201.     if(strcmp(cmd,"cli")==0)
  202.     {
  203.         com+=" ";
  204.         com+=PromptString("","cpr cli execution","Enter arguments");
  205.     }
  206.     System(com);
  207. }
  208.  
  209.     MenuAdd("t", "SAS/C");
  210.     MenuAdd("i", "Make...", "SASC_Make();", "Amiga D m");
  211.     MenuAdd("i", "Build...", "SASC_Build();", "Amiga D M");
  212.     MenuAdd("i", "Compile...", "SASC_Compile();", "Amiga D C");
  213.     MenuAdd("i", "Options");
  214.         MenuAdd("s", "Local", "SASC_Opts(0);", "Amiga D o");
  215.         MenuAdd("s", "Global", "SASC_Opts(1);", "Amiga D O");
  216.     MenuAdd("i", "Run Program", "SASC_Run();", "Amiga D r");
  217.     MenuAdd("i", "Debug Program");
  218.         MenuAdd("s", "CLI", "SASC_Debug(\"cli\");", "Amiga D Amiga d");
  219.         MenuAdd("s", "WB", "SASC_Debug(\"wb\");", "Amiga D Amiga D");
  220.     MenuAdd("i", "---");
  221.     MenuAdd("i", "Step", "SASC_ShowMsg(\"\"); ARexxSend(\"SC_SCMSG\",\"delete\");", "Amiga D s");
  222.     MenuAdd("i", "Current", "SASC_ShowMsg(\"\");", "Amiga D c");
  223.     MenuAdd("i", "Previous", "SASC_ShowMsg(\"prev\");", "Amiga D p");
  224.     MenuAdd("i", "Next", "SASC_ShowMsg(\"next\");", "Amiga D n");
  225.     MenuAdd("i", "First", "SASC_ShowMsg(\"top\");", "Amiga D f");
  226.     MenuAdd("i", "Last", "SASC_ShowMsg(\"bottom\");", "Amiga D l");
  227.     MenuAdd("i", "Delete", "ARexxSend(\"SC_SCMSG\",\"delete\");", "Amiga D d");
  228.     MenuAdd("i", "---");
  229.     MenuAdd("i", "Start Browser", "System(\"Run SC:c/scmsg\");", "Amiga D Amiga l");
  230.     MenuAdd("i", "Quit Browser", "ARexxSend(\"SC_SCMSG\",\"quit\");", "Amiga D Amiga q");
  231.     MenuAdd("i", "Show Browser", "ARexxSend(\"SC_SCMSG\",\"show\");", "Amiga D Amiga s");
  232.     MenuAdd("i", "Hide Browser", "ARexxSend(\"SC_SCMSG\",\"hide\");", "Amiga D Amiga h");
  233.     MenuAdd("i", "Clear Browser", "ARexxSend(\"SC_SCMSG\",\"clear\");", "Amiga D Amiga c");
  234.  
  235.     MenuBuild();
  236.